#ifndef ORDERDAO_H
#define ORDERDAO_H

#include "database.h"
#include "order.h"
#include <QString>
#include <QVector>
#include <QMap>
#include <QVariant>

class OrderDAO
{
public:
    explicit OrderDAO(Database *db);

    // 创建新订单
    int createOrder(const Order &order);

    // 根据ID获取订单
    Order getOrderById(int orderId);

    // 获取所有订单
    QVector<Order> getAllOrders();

    // 根据用户ID获取订单
    QVector<Order> getOrdersByUserId(int userId);

    // 根据会员ID获取订单
    QVector<Order> getOrdersByCustomerId(int customerId);

    // 根据日期范围获取订单
    QVector<Order> getOrdersByDateRange(const QDateTime &startDate, const QDateTime &endDate);

    // 更新订单状态
    bool updateOrderStatus(int orderId, OrderStatus status);

    // 更新订单支付信息
    bool updateOrderPayment(int orderId, const QString &transactionNo, const QDateTime &paymentTime);

    // 删除订单
    bool deleteOrder(int orderId);

    // 获取订单详情
    QVector<OrderDetail> getOrderDetails(int orderId);

    // 添加订单详情
    bool addOrderDetail(const OrderDetail &detail);

    // 删除订单详情
    bool deleteOrderDetails(int orderId);

    // 获取今日订单数量
    int getTodayOrderCount();

    // 获取今日销售额
    double getTodaySales();

    // 获取指定日期范围内的销售额统计
    QMap<QString, double> getSalesStatistics(const QDateTime &startDate, const QDateTime &endDate);

private:
    Database *m_db;
};

#endif // ORDERDAO_H
